<template>
    <div id="root">
        <div class="todo-container">
            <div class="todo-wrap">
                <TopContent :addTask="addTask"></TopContent>
                <ListContent :taskArray="taskArray" :updateTaskstatus='updateTaskstatus' :deleteTaskById='deleteTaskById'></ListContent>
                <FootContent :taskArray="taskArray" :checkOrUncheckTask="checkOrUncheckTask" :deleteTaskBystatus="deleteTaskBystatus"></FootContent>
            </div>
        </div>
    </div>
</template>

<script>
import TopContent from './components/TopContent.vue';
import ListContent from './components/ListContent.vue';
import FootContent from './components/FootContent.vue';
export default {
    name: 'App',
    data() {
        return {


            taskArray: JSON.parse(localStorage.getItem('taskArray')) || [],

        }
    },
    methods: {

        addTask(newTaskobj) {
            this.taskArray.unshift(newTaskobj);
        },

        updateTaskstatus(taskId, flag) {
            let newTaskobj = this.taskArray.find(task => task.id === taskId);
            newTaskobj.status = flag;

        },
        checkOrUncheckTask(flag) {
            this.taskArray.forEach(task => task.status = flag)
        },

        deleteTaskBystatus() {
            this.taskArray = this.taskArray.filter(task => !task.status)
        },

        deleteTaskById(taskId) {
            this.taskArray = this.taskArray.filter(task => task.id != taskId)
        }
    },
    components: {
        TopContent,
        ListContent,
        FootContent
    },
    watch: {

        taskArray: {
            immediate: true,
            deep: true,
            handler(newValue) {
                localStorage.setItem('taskArray', JSON.stringify(newValue));
            }
        }
    }


}
</script>

<style>
body {
    background: #fff;
}

.btn {
    display: inline-block;
    padding: 4px 12px;
    margin-bottom: 0;
    font-size: 14px;
    line-height: 20px;
    text-align: center;
    vertical-align: middle;
    cursor: pointer;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
    border-radius: 4px;
}

.btn-danger {
    color: #fff;
    background-color: #da4f49;
    border: 1px solid #bd362f;
}

.btn-danger:hover {
    color: #fff;
    background-color: #bd362f;
}

.btn:focus {
    outline: none;
}

/*app*/

.todo-container {
    width: 600px;
    margin: 0 auto;
}

.todo-container .todo-wrap {
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 5px;
}
</style>
